const { app, BrowserWindow,ipcMain,desktopCapturer  } = require('electron');
const path = require('path');
const fs = require('fs');
const { promisify } = require('util');
const writeFile = promisify(fs.writeFile);



async function createWindow() {
  // 动态导入 electron-is-dev
  const isDev = (await import('electron-is-dev')).default;

  // 创建窗口
  const win = new BrowserWindow({
    width: 1500,
    height: 1000,
    webPreferences: {
      contextIsolation: true,
      nodeIntegration: false,
      preload: path.join(__dirname, 'preload.js') // 如果需要的话
    }
  });

  // 确定加载的 URL
  const startURL = isDev
    ? 'http://localhost:9527' // 开发环境下使用的本地服务器地址
    : `file://${path.join(__dirname, 'build/index.html')}`; // 生产环境下的文件路径

  // 加载 URL
  win.loadURL(startURL).catch(err => {
    console.error('Failed to load URL:', err); // 捕获并输出加载错误
  });

  // 根据环境条件打开开发者工具
  if (isDev) {
    win.webContents.openDevTools();
  }


  //接受渲染线程发送的信息
  ipcMain.on('element-coordinates', (event, data) => {
      console.log('jieshou', data);
      // 主进程处理逻辑
  });

  // // 监听渲染进程的截图请求
  // ipcMain.on('take-screenshot', async (event) => {
  //   try {
  //     const sources = await desktopCapturer.getSources({ types: ['screen'] });
  //
  //     if (sources.length > 0) {
  //       const screenshot = sources[0];  // 获取第一个屏幕
  //       event.reply('screenshot-taken', screenshot.thumbnail.toDataURL());  // 返回截图
  //     }
  //   } catch (error) {
  //     console.error('Error taking screenshot:', error);
  //   }
  // });
  //
  //
  //
// 保存截图到自定义路径
  const saveScreenshotToFile = (image, filePath) => {
    return new Promise((resolve, reject) => {
      fs.writeFile(filePath, image.toPNG(), (err) => {
        if (err) {
          reject(err);
        } else {
          resolve();
        }
      });
    });
  };

// 监听渲染进程请求截图
  ipcMain.on('take-screenshot', async (event) => {
    try {
      const sources = await desktopCapturer.getSources({ types: ['screen'] });

      if (sources.length > 0) {
        const screenshot = sources[0].thumbnail;  // 获取第一个屏幕的截图
        const base64Data = screenshot.toDataURL();  // 转换为Base64

        // 自定义截图保存路径
        const customPath = path.join('./screenImages', 'screenshot.png');  // 自定义路径

        // 保存截图到自定义文件路径
        await saveScreenshotToFile(screenshot, customPath);

        // 将Base64和保存路径返回给渲染进程
        event.reply('screenshot-taken', { base64Data, customPath });
      }
    } catch (error) {
      console.error('Error taking screenshot:', error);
    }
  });


}


// 应用准备好时创建窗口
app.whenReady().then(createWindow);


// 处理所有窗口关闭事件
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit();
  }
});

// 处理应用重新激活事件

